package $12_interface;

public class Test 
{
	public static void main(String[]args)
	{
		InterImpl ii = new InterImpl();
		System.out.println(ii.NUM);
		ii.method();
		ii.fun();
		//InterImpl.show();
		//ii.show();              因为是静态方法，所以只能通过原来的类调用
		InterA.show();
		System.out.println(InterA.NUM);
	}
}



//接口
interface InterA
{
	//常量
	public static final int NUM = 10;// 其中的public static final可以不写，系统会默认加上
	
	//抽象方法
	public abstract void method();
	
	//静态方法  JDK8版本以后支持
	public static void show()
	{
		System.out.println("这是静态的方法。。。");
	}
	
	//默认方法  JDK8版本以后支持
	public default void fun()          //等价于public void fun(){}
	{
		System.out.println("这是默认的方法。。。");
	}
}



//实现类
//接口与实现类的关系：这个实现类可以理解为是InterA的子类，其作用称为实现接口InterA，一个类可以实现多个接口
//需要对接口的所有抽象方法进行重写，默认方法选择性重写
//这个类可以在继承另一个类的同时实现一个接口,而且必须是继承在前，实现在后
class InterImpl /*extends Object*/ implements InterA,InterB     //光标移动到报错处可选择一键重写抽象方法
{
	//重写抽象方法
	public void method()
	{
		System.out.println("这是重写后的抽象方法。。。");
	}
	
}


//创建一个新的接口，来演示一个类实现多个接口的格式
interface InterB{}


//接口与接口的关系；接口间是继承的关系，例如下以关系
interface InterC extends InterB {}



